/**
 *
 */
package com.iapcursos.portal.procefet.controle;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;

import com.iapcursos.portal.procefet.modelo.beans.entitys.Aula;
import com.iapcursos.portal.procefet.modelo.beans.entitys.DiaSemana;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Horario;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Turma;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Unidade;
import com.iapcursos.portal.procefet.modelo.beans.sessions.interfaces.Sistema;

/**
 * @author Gleison
 *
 */
public class ControleHorarios{


	private List<Unidade> unidades;
	private Turma turmaSelecionada;
	private List<Aula> aulas;

	private String dado = "";

	@EJB(mappedName="sistemaBean")
	private Sistema sistema;
	/*
	 *
	 */
	public ControleHorarios() {

	}

	@SuppressWarnings("unused")
	@PostConstruct
	private void init(){
		List<Turma> turmas = sistema.recuperarTurmas();
		if(turmas.size()>0){
			this.turmaSelecionada  = turmas.get(0);
		}else{
			this.turmaSelecionada = null;
		}
	}

	/**
	 * @return the unidades
	 */
	public List<Unidade> getUnidades() {
		this.unidades = sistema.recuperarUnidades();
		return unidades;
	}


	/*public String selecionarTurma(){
		FacesContext context = FacesContext.getCurrentInstance();
		Map map = context.getExternalContext().getRequestParameterMap();
		Integer id;
		for(Object obj: map.keySet()){
			System.out.println("Valor da chave: "+obj.toString());
			if(obj.toString().length()>2){
				if(obj.toString().substring(0, 2).equals("id")){
					System.out.println("*** achou id ***");
					id = (Integer) map.get(obj);
					this.turmaSelecionada = controle.getSistema().recuperarTurma(id);
					this.temTurmaSelecionada = true;

					System.out.println("*** id: "+this.turmaSelecionada.getNome()+" ***");

				}
			}
		}
		return "exibirHorario";
	}*/

	public String selecionarTurma(){
		FacesContext context = FacesContext.getCurrentInstance();
		Map<String, String> map = context.getExternalContext().getRequestParameterMap();
		Integer id = Integer.parseInt(map.get("id"));
		this.turmaSelecionada = sistema.recuperarTurma(id);
		return null;
	}

	public Turma getTurmaSelecionada() {
		return turmaSelecionada;
	}

	public void setTurmaSelecionada(Turma turmaSelecionada) {
		this.turmaSelecionada = turmaSelecionada;
	}


	public List<Aula> getAulas() {
		List<Horario> horarios = turmaSelecionada.getHorarios();
		List<Aula> aulasDaSemana = new ArrayList<Aula>();
		aulas = new ArrayList<Aula>();

		for (Horario h : horarios ) {
			for (DiaSemana chave : h.getMapaAulas().keySet()) {
				aulas.add(h.getMapaAulas().get(chave));
			}
		}

		boolean teste = true;

		for (Aula aula : this.aulas) {

			if(aulasDaSemana.isEmpty()){
				aulasDaSemana.add(aula);
			}

			for (Aula jaTemEssaAula : aulasDaSemana) {
				if(aula.getDisciplina().getId() == jaTemEssaAula.getDisciplina().getId()){
				teste = false;
				}
			}

			if(teste){
				aulasDaSemana.add(aula);
			}

			teste = true;

		}

		return aulasDaSemana;
	}

	public String getDado() {
		List<Turma> turmas = sistema.recuperarTurmas();
		if(turmas.size()>0){
			this.turmaSelecionada  = turmas.get(0);
		}else{
			this.turmaSelecionada = null;
		}
		return dado;
	}


}
